/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package ged.impl;

import ged.BorderInnerMargin;
import ged.BorderMargin;
import ged.Color;
import ged.Font;
import ged.GedPackage;
import ged.Gradient;
import ged.Label_attributes;
import ged.LineType;
import ged.LineWidth;
import ged.Node;

import ged.NodeImage;
import ged.NodesShape;
import ged.fontName;
import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;

import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Node</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link ged.impl.NodeImpl#getLabel <em>Label</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getToolTip <em>Tool Tip</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getBorder_lineType <em>Border line Type</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getGradient <em>Gradient</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getShape <em>Shape</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getImages <em>Images</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getCustomShape <em>Custom Shape</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getCustomImage <em>Custom Image</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getBackgroundColor <em>Background Color</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getForegroundColor <em>Foreground Color</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getFontColor <em>Font Color</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getBorderMargin <em>Border Margin</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getInnerMargin <em>Inner Margin</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getLinewidth <em>Linewidth</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getFont <em>Font</em>}</li>
 *   <li>{@link ged.impl.NodeImpl#getLabel_attributes <em>Label attributes</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class NodeImpl extends EObjectImpl implements Node
{
  /**
   * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getLabel()
   * @generated
   * @ordered
   */
  protected static final String LABEL_EDEFAULT = null;

  /**
   * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getLabel()
   * @generated
   * @ordered
   */
  protected String label = LABEL_EDEFAULT;

  /**
   * The default value of the '{@link #getToolTip() <em>Tool Tip</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getToolTip()
   * @generated
   * @ordered
   */
  protected static final String TOOL_TIP_EDEFAULT = null;

  /**
   * The cached value of the '{@link #getToolTip() <em>Tool Tip</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getToolTip()
   * @generated
   * @ordered
   */
  protected String toolTip = TOOL_TIP_EDEFAULT;

  /**
   * The default value of the '{@link #getBorder_lineType() <em>Border line Type</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBorder_lineType()
   * @generated
   * @ordered
   */
  protected static final LineType BORDER_LINE_TYPE_EDEFAULT = LineType.SOLID;

  /**
   * The cached value of the '{@link #getBorder_lineType() <em>Border line Type</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBorder_lineType()
   * @generated
   * @ordered
   */
  protected LineType border_lineType = BORDER_LINE_TYPE_EDEFAULT;

  /**
   * The default value of the '{@link #getGradient() <em>Gradient</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getGradient()
   * @generated
   * @ordered
   */
  protected static final Gradient GRADIENT_EDEFAULT = Gradient.NO_GRADINET;

  /**
   * The cached value of the '{@link #getGradient() <em>Gradient</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getGradient()
   * @generated
   * @ordered
   */
  protected Gradient gradient = GRADIENT_EDEFAULT;

  /**
   * The default value of the '{@link #getShape() <em>Shape</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getShape()
   * @generated
   * @ordered
   */
  protected static final NodesShape SHAPE_EDEFAULT = NodesShape.ROUNDED_RECTANGLE;

  /**
   * The cached value of the '{@link #getShape() <em>Shape</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getShape()
   * @generated
   * @ordered
   */
  protected NodesShape shape = SHAPE_EDEFAULT;

  /**
   * The default value of the '{@link #getImages() <em>Images</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getImages()
   * @generated
   * @ordered
   */
  protected static final NodeImage IMAGES_EDEFAULT = NodeImage.NO_IMAGE;

  /**
   * The cached value of the '{@link #getImages() <em>Images</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getImages()
   * @generated
   * @ordered
   */
  protected NodeImage images = IMAGES_EDEFAULT;

  /**
   * The default value of the '{@link #getCustomShape() <em>Custom Shape</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getCustomShape()
   * @generated
   * @ordered
   */
  protected static final String CUSTOM_SHAPE_EDEFAULT = null;

  /**
   * The cached value of the '{@link #getCustomShape() <em>Custom Shape</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getCustomShape()
   * @generated
   * @ordered
   */
  protected String customShape = CUSTOM_SHAPE_EDEFAULT;

  /**
   * The default value of the '{@link #getCustomImage() <em>Custom Image</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getCustomImage()
   * @generated
   * @ordered
   */
  protected static final String CUSTOM_IMAGE_EDEFAULT = null;

  /**
   * The cached value of the '{@link #getCustomImage() <em>Custom Image</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getCustomImage()
   * @generated
   * @ordered
   */
  protected String customImage = CUSTOM_IMAGE_EDEFAULT;

  /**
   * The cached value of the '{@link #getBackgroundColor() <em>Background Color</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBackgroundColor()
   * @generated
   * @ordered
   */
  protected Color backgroundColor;

  /**
   * The cached value of the '{@link #getForegroundColor() <em>Foreground Color</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getForegroundColor()
   * @generated
   * @ordered
   */
  protected Color foregroundColor;

  /**
   * The cached value of the '{@link #getFontColor() <em>Font Color</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getFontColor()
   * @generated
   * @ordered
   */
  protected Color fontColor;

  /**
   * The cached value of the '{@link #getBorderMargin() <em>Border Margin</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBorderMargin()
   * @generated
   * @ordered
   */
  protected BorderMargin borderMargin;

  /**
   * The cached value of the '{@link #getInnerMargin() <em>Inner Margin</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getInnerMargin()
   * @generated
   * @ordered
   */
  protected BorderInnerMargin innerMargin;

  /**
   * The cached value of the '{@link #getLinewidth() <em>Linewidth</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getLinewidth()
   * @generated
   * @ordered
   */
  protected LineWidth linewidth;

  /**
   * The cached value of the '{@link #getFont() <em>Font</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getFont()
   * @generated
   * @ordered
   */
  protected Font font;

  /**
   * The cached value of the '{@link #getLabel_attributes() <em>Label attributes</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getLabel_attributes()
   * @generated
   * @ordered
   */
  protected Label_attributes label_attributes;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NodeImpl()
  {
    super();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  protected EClass eStaticClass()
  {
    return GedPackage.Literals.NODE;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public String getLabel()
  {
    return label;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setLabel(String newLabel)
  {
    String oldLabel = label;
    label = newLabel;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__LABEL, oldLabel, label));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public String getToolTip()
  {
    return toolTip;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setToolTip(String newToolTip)
  {
    String oldToolTip = toolTip;
    toolTip = newToolTip;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__TOOL_TIP, oldToolTip, toolTip));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Color getBackgroundColor()
  {
    if (backgroundColor != null && backgroundColor.eIsProxy())
    {
      InternalEObject oldBackgroundColor = (InternalEObject)backgroundColor;
      backgroundColor = (Color)eResolveProxy(oldBackgroundColor);
      if (backgroundColor != oldBackgroundColor)
      {
        if (eNotificationRequired())
          eNotify(new ENotificationImpl(this, Notification.RESOLVE, GedPackage.NODE__BACKGROUND_COLOR, oldBackgroundColor, backgroundColor));
      }
    }
    return backgroundColor;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Color basicGetBackgroundColor()
  {
    return backgroundColor;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setBackgroundColor(Color newBackgroundColor)
  {
    Color oldBackgroundColor = backgroundColor;
    backgroundColor = newBackgroundColor;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__BACKGROUND_COLOR, oldBackgroundColor, backgroundColor));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Color getForegroundColor()
  {
    if (foregroundColor != null && foregroundColor.eIsProxy())
    {
      InternalEObject oldForegroundColor = (InternalEObject)foregroundColor;
      foregroundColor = (Color)eResolveProxy(oldForegroundColor);
      if (foregroundColor != oldForegroundColor)
      {
        if (eNotificationRequired())
          eNotify(new ENotificationImpl(this, Notification.RESOLVE, GedPackage.NODE__FOREGROUND_COLOR, oldForegroundColor, foregroundColor));
      }
    }
    return foregroundColor;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Color basicGetForegroundColor()
  {
    return foregroundColor;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setForegroundColor(Color newForegroundColor)
  {
    Color oldForegroundColor = foregroundColor;
    foregroundColor = newForegroundColor;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__FOREGROUND_COLOR, oldForegroundColor, foregroundColor));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Color getFontColor()
  {
    if (fontColor != null && fontColor.eIsProxy())
    {
      InternalEObject oldFontColor = (InternalEObject)fontColor;
      fontColor = (Color)eResolveProxy(oldFontColor);
      if (fontColor != oldFontColor)
      {
        if (eNotificationRequired())
          eNotify(new ENotificationImpl(this, Notification.RESOLVE, GedPackage.NODE__FONT_COLOR, oldFontColor, fontColor));
      }
    }
    return fontColor;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Color basicGetFontColor()
  {
    return fontColor;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setFontColor(Color newFontColor)
  {
    Color oldFontColor = fontColor;
    fontColor = newFontColor;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__FONT_COLOR, oldFontColor, fontColor));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public BorderMargin getBorderMargin()
  {
    if (borderMargin != null && borderMargin.eIsProxy())
    {
      InternalEObject oldBorderMargin = (InternalEObject)borderMargin;
      borderMargin = (BorderMargin)eResolveProxy(oldBorderMargin);
      if (borderMargin != oldBorderMargin)
      {
        if (eNotificationRequired())
          eNotify(new ENotificationImpl(this, Notification.RESOLVE, GedPackage.NODE__BORDER_MARGIN, oldBorderMargin, borderMargin));
      }
    }
    return borderMargin;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public BorderMargin basicGetBorderMargin()
  {
    return borderMargin;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setBorderMargin(BorderMargin newBorderMargin)
  {
    BorderMargin oldBorderMargin = borderMargin;
    borderMargin = newBorderMargin;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__BORDER_MARGIN, oldBorderMargin, borderMargin));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public BorderInnerMargin getInnerMargin()
  {
    if (innerMargin != null && innerMargin.eIsProxy())
    {
      InternalEObject oldInnerMargin = (InternalEObject)innerMargin;
      innerMargin = (BorderInnerMargin)eResolveProxy(oldInnerMargin);
      if (innerMargin != oldInnerMargin)
      {
        if (eNotificationRequired())
          eNotify(new ENotificationImpl(this, Notification.RESOLVE, GedPackage.NODE__INNER_MARGIN, oldInnerMargin, innerMargin));
      }
    }
    return innerMargin;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public BorderInnerMargin basicGetInnerMargin()
  {
    return innerMargin;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setInnerMargin(BorderInnerMargin newInnerMargin)
  {
    BorderInnerMargin oldInnerMargin = innerMargin;
    innerMargin = newInnerMargin;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__INNER_MARGIN, oldInnerMargin, innerMargin));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public LineWidth getLinewidth()
  {
    if (linewidth != null && linewidth.eIsProxy())
    {
      InternalEObject oldLinewidth = (InternalEObject)linewidth;
      linewidth = (LineWidth)eResolveProxy(oldLinewidth);
      if (linewidth != oldLinewidth)
      {
        if (eNotificationRequired())
          eNotify(new ENotificationImpl(this, Notification.RESOLVE, GedPackage.NODE__LINEWIDTH, oldLinewidth, linewidth));
      }
    }
    return linewidth;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public LineWidth basicGetLinewidth()
  {
    return linewidth;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setLinewidth(LineWidth newLinewidth)
  {
    LineWidth oldLinewidth = linewidth;
    linewidth = newLinewidth;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__LINEWIDTH, oldLinewidth, linewidth));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Font getFont()
  {
    if (font != null && font.eIsProxy())
    {
      InternalEObject oldFont = (InternalEObject)font;
      font = (Font)eResolveProxy(oldFont);
      if (font != oldFont)
      {
        if (eNotificationRequired())
          eNotify(new ENotificationImpl(this, Notification.RESOLVE, GedPackage.NODE__FONT, oldFont, font));
      }
    }
    return font;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Font basicGetFont()
  {
    return font;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setFont(Font newFont)
  {
    Font oldFont = font;
    font = newFont;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__FONT, oldFont, font));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Label_attributes getLabel_attributes()
  {
    if (label_attributes != null && label_attributes.eIsProxy())
    {
      InternalEObject oldLabel_attributes = (InternalEObject)label_attributes;
      label_attributes = (Label_attributes)eResolveProxy(oldLabel_attributes);
      if (label_attributes != oldLabel_attributes)
      {
        if (eNotificationRequired())
          eNotify(new ENotificationImpl(this, Notification.RESOLVE, GedPackage.NODE__LABEL_ATTRIBUTES, oldLabel_attributes, label_attributes));
      }
    }
    return label_attributes;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Label_attributes basicGetLabel_attributes()
  {
    return label_attributes;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setLabel_attributes(Label_attributes newLabel_attributes)
  {
    Label_attributes oldLabel_attributes = label_attributes;
    label_attributes = newLabel_attributes;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__LABEL_ATTRIBUTES, oldLabel_attributes, label_attributes));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public LineType getBorder_lineType()
  {
    return border_lineType;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setBorder_lineType(LineType newBorder_lineType)
  {
    LineType oldBorder_lineType = border_lineType;
    border_lineType = newBorder_lineType == null ? BORDER_LINE_TYPE_EDEFAULT : newBorder_lineType;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__BORDER_LINE_TYPE, oldBorder_lineType, border_lineType));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Gradient getGradient()
  {
    return gradient;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setGradient(Gradient newGradient)
  {
    Gradient oldGradient = gradient;
    gradient = newGradient == null ? GRADIENT_EDEFAULT : newGradient;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__GRADIENT, oldGradient, gradient));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public NodesShape getShape()
  {
    return shape;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setShape(NodesShape newShape)
  {
    NodesShape oldShape = shape;
    shape = newShape == null ? SHAPE_EDEFAULT : newShape;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__SHAPE, oldShape, shape));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public NodeImage getImages()
  {
    return images;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setImages(NodeImage newImages)
  {
    NodeImage oldImages = images;
    images = newImages == null ? IMAGES_EDEFAULT : newImages;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__IMAGES, oldImages, images));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public String getCustomShape()
  {
    return customShape;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setCustomShape(String newCustomShape)
  {
    String oldCustomShape = customShape;
    customShape = newCustomShape;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__CUSTOM_SHAPE, oldCustomShape, customShape));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public String getCustomImage()
  {
    return customImage;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setCustomImage(String newCustomImage)
  {
    String oldCustomImage = customImage;
    customImage = newCustomImage;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET, GedPackage.NODE__CUSTOM_IMAGE, oldCustomImage, customImage));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Object eGet(int featureID, boolean resolve, boolean coreType)
  {
    switch (featureID)
    {
      case GedPackage.NODE__LABEL:
        return getLabel();
      case GedPackage.NODE__TOOL_TIP:
        return getToolTip();
      case GedPackage.NODE__BORDER_LINE_TYPE:
        return getBorder_lineType();
      case GedPackage.NODE__GRADIENT:
        return getGradient();
      case GedPackage.NODE__SHAPE:
        return getShape();
      case GedPackage.NODE__IMAGES:
        return getImages();
      case GedPackage.NODE__CUSTOM_SHAPE:
        return getCustomShape();
      case GedPackage.NODE__CUSTOM_IMAGE:
        return getCustomImage();
      case GedPackage.NODE__BACKGROUND_COLOR:
        if (resolve) return getBackgroundColor();
        return basicGetBackgroundColor();
      case GedPackage.NODE__FOREGROUND_COLOR:
        if (resolve) return getForegroundColor();
        return basicGetForegroundColor();
      case GedPackage.NODE__FONT_COLOR:
        if (resolve) return getFontColor();
        return basicGetFontColor();
      case GedPackage.NODE__BORDER_MARGIN:
        if (resolve) return getBorderMargin();
        return basicGetBorderMargin();
      case GedPackage.NODE__INNER_MARGIN:
        if (resolve) return getInnerMargin();
        return basicGetInnerMargin();
      case GedPackage.NODE__LINEWIDTH:
        if (resolve) return getLinewidth();
        return basicGetLinewidth();
      case GedPackage.NODE__FONT:
        if (resolve) return getFont();
        return basicGetFont();
      case GedPackage.NODE__LABEL_ATTRIBUTES:
        if (resolve) return getLabel_attributes();
        return basicGetLabel_attributes();
    }
    return super.eGet(featureID, resolve, coreType);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public void eSet(int featureID, Object newValue)
  {
    switch (featureID)
    {
      case GedPackage.NODE__LABEL:
        setLabel((String)newValue);
        return;
      case GedPackage.NODE__TOOL_TIP:
        setToolTip((String)newValue);
        return;
      case GedPackage.NODE__BORDER_LINE_TYPE:
        setBorder_lineType((LineType)newValue);
        return;
      case GedPackage.NODE__GRADIENT:
        setGradient((Gradient)newValue);
        return;
      case GedPackage.NODE__SHAPE:
        setShape((NodesShape)newValue);
        return;
      case GedPackage.NODE__IMAGES:
        setImages((NodeImage)newValue);
        return;
      case GedPackage.NODE__CUSTOM_SHAPE:
        setCustomShape((String)newValue);
        return;
      case GedPackage.NODE__CUSTOM_IMAGE:
        setCustomImage((String)newValue);
        return;
      case GedPackage.NODE__BACKGROUND_COLOR:
        setBackgroundColor((Color)newValue);
        return;
      case GedPackage.NODE__FOREGROUND_COLOR:
        setForegroundColor((Color)newValue);
        return;
      case GedPackage.NODE__FONT_COLOR:
        setFontColor((Color)newValue);
        return;
      case GedPackage.NODE__BORDER_MARGIN:
        setBorderMargin((BorderMargin)newValue);
        return;
      case GedPackage.NODE__INNER_MARGIN:
        setInnerMargin((BorderInnerMargin)newValue);
        return;
      case GedPackage.NODE__LINEWIDTH:
        setLinewidth((LineWidth)newValue);
        return;
      case GedPackage.NODE__FONT:
        setFont((Font)newValue);
        return;
      case GedPackage.NODE__LABEL_ATTRIBUTES:
        setLabel_attributes((Label_attributes)newValue);
        return;
    }
    super.eSet(featureID, newValue);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public void eUnset(int featureID)
  {
    switch (featureID)
    {
      case GedPackage.NODE__LABEL:
        setLabel(LABEL_EDEFAULT);
        return;
      case GedPackage.NODE__TOOL_TIP:
        setToolTip(TOOL_TIP_EDEFAULT);
        return;
      case GedPackage.NODE__BORDER_LINE_TYPE:
        setBorder_lineType(BORDER_LINE_TYPE_EDEFAULT);
        return;
      case GedPackage.NODE__GRADIENT:
        setGradient(GRADIENT_EDEFAULT);
        return;
      case GedPackage.NODE__SHAPE:
        setShape(SHAPE_EDEFAULT);
        return;
      case GedPackage.NODE__IMAGES:
        setImages(IMAGES_EDEFAULT);
        return;
      case GedPackage.NODE__CUSTOM_SHAPE:
        setCustomShape(CUSTOM_SHAPE_EDEFAULT);
        return;
      case GedPackage.NODE__CUSTOM_IMAGE:
        setCustomImage(CUSTOM_IMAGE_EDEFAULT);
        return;
      case GedPackage.NODE__BACKGROUND_COLOR:
        setBackgroundColor((Color)null);
        return;
      case GedPackage.NODE__FOREGROUND_COLOR:
        setForegroundColor((Color)null);
        return;
      case GedPackage.NODE__FONT_COLOR:
        setFontColor((Color)null);
        return;
      case GedPackage.NODE__BORDER_MARGIN:
        setBorderMargin((BorderMargin)null);
        return;
      case GedPackage.NODE__INNER_MARGIN:
        setInnerMargin((BorderInnerMargin)null);
        return;
      case GedPackage.NODE__LINEWIDTH:
        setLinewidth((LineWidth)null);
        return;
      case GedPackage.NODE__FONT:
        setFont((Font)null);
        return;
      case GedPackage.NODE__LABEL_ATTRIBUTES:
        setLabel_attributes((Label_attributes)null);
        return;
    }
    super.eUnset(featureID);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public boolean eIsSet(int featureID)
  {
    switch (featureID)
    {
      case GedPackage.NODE__LABEL:
        return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);
      case GedPackage.NODE__TOOL_TIP:
        return TOOL_TIP_EDEFAULT == null ? toolTip != null : !TOOL_TIP_EDEFAULT.equals(toolTip);
      case GedPackage.NODE__BORDER_LINE_TYPE:
        return border_lineType != BORDER_LINE_TYPE_EDEFAULT;
      case GedPackage.NODE__GRADIENT:
        return gradient != GRADIENT_EDEFAULT;
      case GedPackage.NODE__SHAPE:
        return shape != SHAPE_EDEFAULT;
      case GedPackage.NODE__IMAGES:
        return images != IMAGES_EDEFAULT;
      case GedPackage.NODE__CUSTOM_SHAPE:
        return CUSTOM_SHAPE_EDEFAULT == null ? customShape != null : !CUSTOM_SHAPE_EDEFAULT.equals(customShape);
      case GedPackage.NODE__CUSTOM_IMAGE:
        return CUSTOM_IMAGE_EDEFAULT == null ? customImage != null : !CUSTOM_IMAGE_EDEFAULT.equals(customImage);
      case GedPackage.NODE__BACKGROUND_COLOR:
        return backgroundColor != null;
      case GedPackage.NODE__FOREGROUND_COLOR:
        return foregroundColor != null;
      case GedPackage.NODE__FONT_COLOR:
        return fontColor != null;
      case GedPackage.NODE__BORDER_MARGIN:
        return borderMargin != null;
      case GedPackage.NODE__INNER_MARGIN:
        return innerMargin != null;
      case GedPackage.NODE__LINEWIDTH:
        return linewidth != null;
      case GedPackage.NODE__FONT:
        return font != null;
      case GedPackage.NODE__LABEL_ATTRIBUTES:
        return label_attributes != null;
    }
    return super.eIsSet(featureID);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public String toString()
  {
    if (eIsProxy()) return super.toString();

    StringBuffer result = new StringBuffer(super.toString());
    result.append(" (label: ");
    result.append(label);
    result.append(", toolTip: ");
    result.append(toolTip);
    result.append(", border_lineType: ");
    result.append(border_lineType);
    result.append(", gradient: ");
    result.append(gradient);
    result.append(", shape: ");
    result.append(shape);
    result.append(", images: ");
    result.append(images);
    result.append(", customShape: ");
    result.append(customShape);
    result.append(", customImage: ");
    result.append(customImage);
    result.append(')');
    return result.toString();
  }

} //NodeImpl
